home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.anonawest.com
/
ftp.anonawest.com.tar
/
ftp.anonawest.com
/
Memorial Day+TAPS_files
/
ylib_list.js
< prev
Wrap
Text File
|
2013-02-25
|
4KB
|
139 lines
/*
| create your own build method to fit your menu design
|
| send questions to jchu@yahoo-inc.com
*/
/*
| constructor
| param: id - an identifier, w - width of the menu
*/
function ylib_List(id, w) {
this.name=id;
this.id = id+'_List';
eval(this.id+"=this");
this.menu = null;
this.items = new Array();
this.h = 0;
this.w = w;
this.isOpen = 0;
this.multiSelect = 0;
this.isChild = 0;
this.selectedIdx = null;
this.pmenuIdx = null;
this.pmenuItemIdx = null;
this.lnk = '';
this.css = '';
this.div = '';
this.color = new Object();
this.add = ylib_listAdd;
this.init = ylib_listInit;
this.over = ylib_listOver;
this.out = ylib_listOut;
this.down = ylib_listDown;
this.select = ylib_listSelect;
this.deselect = ylib_listDeselect;
this.turnOn = ylib_listTurnOn;
this.turnOff = ylib_listTurnOff ;
this.sLink = ylib_listSetLink;
this.onSelect = new Function();
this.build = new Function();
}
/*
| items (array) [text, value]
| p - parent menu index, index instead of object b/c of performance concern
| idx - parent menu item index
*/
function ylib_listAdd(items,p,idx) {
if (items==null) return;
if (p!=null) {
this.pmenuIdx = p;
this.pmenuItemIdx = idx;
this.isChild=1;
}
var l = items.length;
for (var i=0; i<l; i++) {
this.items[i] = new Array();
this.items[i].selected = 0;
this.items[i].hasChild = 0;
this.items[i].childIdx = -1;
this.items[i].text = items[i][0];
this.items[i].value = items[i][1];
this.items[i].lnk = '<a href="'+items[i][1]+'" onfocus="'+this.id+'.over('+i+')" onblur="'+this.id+'.out('+i+')">'+items[i][0]+'</a>';
this.items[i].y = this.h;
this.h += this.itemH;
}
}
function ylib_listInit() {
// activate each item
var oItem=null;
this.handle = ylib_getObj(this.id+this.handle);
for (var i=0; i<this.items.length; i++) {
oItem = ylib_getObj(this.id+i);
// set mouseevents
ylib_addEvt(oItem, "mouseover", new Function(this.id+".over("+i+")"),false);
ylib_addEvt(oItem, "mouseout", new Function(this.id+".out("+i+")"),false);
if (oBw.ns) oItem.captureEvents(Event.MOUSEDOWN) // needed for ns4
ylib_addEvt(oItem, "mousedown", new Function(this.id+".down("+i+")"),false);
}
}
function ylib_listOver(idx) {
if (this.menu&&this.menu.hideTimerID!=null) { clearTimeout(this.menu.hideTimerID); this.menu.hideTimerID=null; }
if (!this.items[idx].selected) { this.turnOn(ylib_getObj(this.id+idx)); }
if (this.isOpen && idx!=this.selectedIdx) {
if (this.menu!=null) this.menu.hide(this); // close menus when rolling over other items in the parent menu
this.deselect(this.selectedIdx);
if (this.items[idx].hasChild) this.select(idx);
}
}
function ylib_listOut(idx) {
if (!this.items[idx].selected) { this.turnOff(ylib_getObj(this.id+idx)) }
if (this.isChild) this.menu.hideMenu();
}
function ylib_listDown(idx) {
window.location.href = this.items[idx].value;
return false;
}
function ylib_listSelect(idx) {
var oItem = this.items[idx]
if (oItem==null) return;
oItem.selected = 1;
this.selectedIdx = idx;
this.onSelect(ylib_getObj(this.id+idx));
}
function ylib_listDeselect(idx) {
oItem = this.items[idx];
if (oItem==null) return;
oItem.selected = 0;
this.turnOff(ylib_getObj(this.id+idx));
this.selectedIdx = null
}
function ylib_listTurnOn(o) {
ylib_setStyle(o,"backgroundColor",this.color.onBg);
this.sLink(o,true);
}
function ylib_listTurnOff(o) {
ylib_setStyle(o,"backgroundColor",this.color.offBg);
this.sLink(o,false);
}
function ylib_listSetLink(o,isOver) {
if(oBw.win && (oBw.ie||oBw.dom)) {
lnk=o.getElementsByTagName("a");
lnk[0].style.textDecorationUnderline=isOver;
this.lnk= (isOver)? lnk[0].href:"";
}
}